package Singleton.type4;

/**
 * @Description:    单例模式 ------ 懒汉式（线程安全，同步方法）
 * @Author: 		ZhaoLiangLiang
 * @date 			2023/2/12 23:01
 **/

public class Singleton04 {

    public static void main(String[] args) {
        Singleton test = Singleton.getInstance();
        Singleton test2 = Singleton.getInstance();
        System.out.println(test.hashCode());
        System.out.println(test2.hashCode());
        System.out.println(test == test2);
    }
}
class Singleton {
    // 1、构造器私有化 防止外部new
    private Singleton(){}

    // 2、本类内部创建对象实例
    private static Singleton instance;

    // 3、提供一个静态的公有方法,加入同步处理的代码,解决线程安全问题
    public static synchronized Singleton getInstance(){
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}
